LocalDS 的启动

启动 DS

1
2
3
4
5
6
7
set Map=ThirdPersonMap
set PlayerNum=2
set DSEXE=UnrealEditor-Win64-Debug-Cmd
set DSProj=../../UnrealEngine/UE/Engine/Binaries/Win64/%DSEXE% ../../../../../TestProject/TestProject.uproject

rem -----DS-----
start %DSProj% %Map% ? -MaxPlayers=%PlayerNum% -port=17777 -game -server -log=DS.log

这里的 DSProj 需要定位到该文件(根据不同的 UE VersionBuildConfig 构建出的名字可能不同):

image-20240604223903457

后续的 .uproject 路径,也是以该 .exe 为基础位置的相对路径。

同时,这里通过 %Map% 指定了 DS 上的 Map-port 指定了本地端口号,并将 log 输出在 DS.log

特别的,如果不通过 %Map% 指定对应 Map,则会采用 ProjectSetting 中的默认配置:

image-20240604222615133

启动 Client

1
2
3
4
5
6
7
8
9
set Map=Entry
set PlayerNum=2
set ClientEXE=UnrealEditor-Win64-Debug.exe
set ClientProj=../../UnrealEngine/UE/Engine/Binaries/Win64/%ClientEXE% ../../../../../TestProject/TestProject.uproject
set CommonClientSet= -game -PIEVIACONSOLE -WinX=200 -WinY=200 -ResX=640 -ResY=360 -Multiprocess -messaging -windowed -NotInstalledEngine -MultiprocessSaveConfig -featurelevelES31
set UID=1000

rem -----Client-----
for /l %%i in (1,1,%PlayerNum%) do start %ClientProj% %Map% -UID=%UID%%%i -log=Client%%i.log %CommonClientSet% -ExecCmds="open 127.0.0.1:17777"

这里执行了 PlayerNumstart,对于 Client,可以首先指定一个空的 MapEntry,后续连上 DS 之后,会同步 DS 对应的 Map

start 之后,会执行命令 open 127.0.0.1:17777 连接到 DS 对应的本地端口;

成功连接上之后,可以在 DS.log 中找到对应 Connection 创建的相关信息:

image-20240604223254052

完整实现

image-20240604223754378

运行以下脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
taskkill /im  .exe /F
taskkill /im UnrealEditor-Cmd.exe /F
taskkill /im UnrealEditor-Win64-Debug.exe /F
taskkill /im UnrealEditor-Win64-Debug-Cmd.exe /F

set DSMap=ThirdPersonMap
set ClientMap=Entry
set PlayerNum=2
set UID=1000

set DSEXE=UnrealEditor-Win64-Debug-Cmd
set DSProj=../../UnrealEngine/UE/Engine/Binaries/Win64/%DSEXE% ../../../../../TestProject/TestProject.uproject

set ClientEXE=UnrealEditor-Win64-Debug.exe
set ClientProj=../../UnrealEngine/UE/Engine/Binaries/Win64/%ClientEXE% ../../../../../TestProject/TestProject.uproject
set CommonClientSet= -game -PIEVIACONSOLE -WinX=200 -WinY=200 -ResX=640 -ResY=360 -Multiprocess -messaging -windowed -NotInstalledEngine -MultiprocessSaveConfig -featurelevelES31

rem -----DS-----
start %DSProj% %DSMap% ? -MaxPlayers=%PlayerNum% -port=17777 -game -server -log=DS.Log

rem -----Client-----
for /l %%i in (1,1,%PlayerNum%) do start %ClientProj% %ClientMap% -UID=%UID%%%i -log=Client%%i.log %CommonClientSet% -ExecCmds="open 127.0.0.1:17777"